private static IEnumerable <FieldType> GetFieldsForFieldType(string remote, Introspection.TypeElement parentField)
        {
            FieldTypeResolver complexFieldTypeResolver = member =>
            {
                if (!(member is RemoteLiteralGraphTypeMemberInfo literalMember))
                {
                    return(null);
                }

                if (!RemoteServerTypes.TryGetValue(remote, out var remoteTypes))
                {
                    return(null);
                }

                var schemaType = remoteTypes.FirstOrDefault(t => t.Name == literalMember.TypeName);
                var realType   = literalMember.IsList
                    ? typeof(ListGraphType <>).MakeGenericType(schemaType)
                    : schemaType;

                return(new FieldType
                {
                    Name = literalMember.Name,
                    Type = realType,
                    Resolver = LiteralGraphTypeHelpers.CreateFieldResolverFor(literalMember)
                });
            };

            var fields = parentField.Fields;

            if (fields == null)
            {
                return(new FieldType[] { });
            }

            return(fields
                   .Select(field =>
            {
                return new RemoteLiteralGraphTypeMemberInfo
                {
                    DeclaringTypeName = parentField.Name,
                    Name = field.Name,
                    Type = IntrospectionTypeToLiteralGraphTypeMemberInfoType(field.Type),
                    TypeName = IntrospectionTypeToLiteralGraphTypeMemberInfoTypeName(field.Type),
                    IsList = field.Type.Kind == TypeElementTypeKind.List,
                    GetValueFn = ctx =>
                    {
                        return ((JToken)ctx.Source)[field.Name].Value <object>();
                    }
                };
            })
                   // TODO: handle unresolvable types (I'm looking at you UNION)
                   .Where(member => member.Type != LiteralGraphTypeMemberInfoType.Unknown)
                   .Select(member => LiteralGraphTypeHelpers.GetFieldTypeForMember(member, complexFieldTypeResolver))
                   .ToList());
        }
        private bool TryGetFieldTypeFromRemoteSchema(Introspection.Schema schema, string name, out Introspection.TypeElement field)
        {
            field = schema.Types.FirstOrDefault(t => t.Name == name);

            return(field != null);
        }