public object BuildObject(ObjectBuilders.IObjectBuilderBuildObjectContext <int> context, int address, ObjectBuilders.IBuiltDependencies <int> dependencies)
            {
                if (!dependencies.TryGetDependency("data", out var dataDependency))
                {
                    throw new InvalidOperationException();
                }

                return(dataDependency.BuiltObject);
            }
 public ObjectBuilders.IDependencySet <int> GetAdditionalDependencies(ObjectBuilders.IObjectBuilderGetAdditionalDependenciesContext <int> context, int address, ObjectBuilders.IBuiltDependencies <int> dependencies)
 {
     return(null);
 }
            public ObjectBuilders.IDependencySet <int> GetAdditionalDependencies(ObjectBuilders.IObjectBuilderGetAdditionalDependenciesContext <int> context, int address, ObjectBuilders.IBuiltDependencies <int> dependencies)
            {
                if (!dependencies.TryGetDependency("redirect", out var redirectDependency))
                {
                    throw new InvalidOperationException("No redirect value found");
                }

                var newAddress = (int)redirectDependency.BuiltObject;

                var additionalDependencies = new ObjectBuilders.DependencySet <int>();

                additionalDependencies.AddDependency("data", newAddress);
                additionalDependencies.RecursiveMode = false;
                return(additionalDependencies);
            }
            public object BuildObject(ObjectBuilders.IObjectBuilderBuildObjectContext <int> context, int address, ObjectBuilders.IBuiltDependencies <int> dependencies)
            {
                if (!dependencies.TryGetDependency("data", out var dependency))
                {
                    throw new InvalidOperationException("No dependency called data found");
                }

                var d = (string)dependency.BuiltObject;

                return("Wrapped " + d);
            }