private static LicenseNode GetNode(EnumerableReader <int> input) { var numChildren = input.TakeFirst(); var numMetadata = input.TakeFirst(); var children = new LicenseNode[numChildren]; for (int i = 0; i < numChildren; i++) { children[i] = GetNode(input); } return(new LicenseNode(children, input.TakeN(numMetadata))); }