private static bool TryGetInjectionFunctionDeclaration(Type type, int injectionFunctionIndex, out string result)
        {
            var stringBuilder = new StringBuilder();

            stringBuilder.Append(DoubleIndent)
            .Append("private static void ")
            .Append(GetInjectionFunctionName(injectionFunctionIndex))
            .Append($"({nameof(MonoBehaviour)} component, {nameof(ResolutionFunction)} resolve)")
            .AppendLine();

            stringBuilder.Append(DoubleIndent)
            .AppendLine("{");

            stringBuilder.Append(TripleIndent)
            .AppendLine($"var obj = ({GetFullyQualifiedName(type)}) component;");

            foreach (var constructMethod in Injection.GetConstructMethods(type))
            {
                if (!Injection.TryGetInjectableParameters(constructMethod, out var parameters))
                {
                    continue;
                }

                stringBuilder.Append(TripleIndent)
                .Append("obj.")
                .Append(Injection.Constructor)
                .Append("(");

                for (var parameterIndex = 0; parameterIndex < parameters.Count; parameterIndex++)
                {
                    if (parameterIndex > 0)
                    {
                        stringBuilder.Append(", ");
                    }

                    var parameter = parameters[parameterIndex];
                    AppendResolveExpression(parameter.ParameterType, stringBuilder);
                }

                stringBuilder.AppendLine(");");
            }


            stringBuilder.Append(DoubleIndent)
            .AppendLine("}");

            result = stringBuilder.ToString();
            return(true);
        }
        private static bool IsInjectable(GameObject gameObject)
        {
            var components = gameObject.GetComponents <MonoBehaviour>();

            foreach (var component in components)
            {
                if (component == null)
                {
                    continue;
                }
                var type             = component.GetType();
                var constructMethods = Injection.GetConstructMethods(type);
                if (constructMethods.Count > 0)
                {
                    return(true);
                }
            }

            return(false);
        }