private string ResolveSPType(ModelNode field)
        {
            var attrs = field.Value.GetType().GetCustomAttributes()
                        .OfType <SPObjectTypeAttribute>();

            var className     = string.Empty;
            var classAssembly = string.Empty;

            if (CurrentProvisionRunner.Name == "SSOM")
            {
                var att = attrs.FirstOrDefault(a => a.ObjectModelType == SPObjectModelType.SSOM);

                className     = att.ClassName;
                classAssembly = att.AssemblyName;
            }

            if (CurrentProvisionRunner.Name == "CSOM")
            {
                var att = attrs.FirstOrDefault(a => a.ObjectModelType == SPObjectModelType.CSOM);

                if (att == null)
                {
                    throw new SPMeta2UnsupportedCSOMRunnerException();
                }

                className     = att.ClassName;
                classAssembly = att.AssemblyName;
            }

            if (CurrentProvisionRunner.Name == "O365")
            {
                var att = attrs.FirstOrDefault(a => a.ObjectModelType == SPObjectModelType.CSOM);

                if (att == null)
                {
                    throw new SPMeta2UnsupportedCSOMRunnerException();
                }

                className     = att.ClassName;
                classAssembly = att.AssemblyName;
            }

            var typeName = CurrentProvisionRunner.ResolveFullTypeName(className, classAssembly);

            return(typeName);
        }