Take a function nodes, iterate it's children, create a list (string?) of node types in-order or preorder.
This essentially creates a "hash" of a class/function node that should have other matches across blobs with different hashes, allowing cross-project code reuse identification.