docs: function(value, Type){
          if(isPrimitiveConverter(Type)) {
              return Type(value);
          }
          // check if value is already a member
          var isMemberTest = Type[isMemberSymbol],
              isMember = false,
              type = typeof Type,
              createNew = Type[newSymbol];
          if(isMemberTest !== undefined) {
              isMember = isMemberTest.call(Type, value);
          } else if(type === "function") {
              if(typeReflections.isConstructorLike(Type)) {
                  isMember = (value instanceof Type);
              }
          }
          if(isMember) {
              return value;
          }
          if(createNew !== undefined) {
              return createNew.call(Type, value);
          } else if(type === "function") {
              if(typeReflections.isConstructorLike(Type)) {
                  return new Type(value);
              } else {
                  // call it like a normal function
                  return Type(value);
              }
          } else {
              throw new Error("can-reflect: Can not convert values into type. Type must provide `can.new` symbol.");
          }
      }