code: ArgumentMarshaller getAutoGeneratedKeyArgumentMarshaller(final Method getter) {
          synchronized (keyArgumentMarshallerCache) {
              if ( !keyArgumentMarshallerCache.containsKey(getter) ) {
                  ArgumentMarshaller marshaller = null;
  
                  Class<?> returnType = getter.getReturnType();
                  if ( String.class.isAssignableFrom(returnType) ) {
                      marshaller = new ArgumentMarshaller() {
  
                          @Override
                          public AttributeValue marshall(Object obj) {
                              String newValue = UUID.randomUUID().toString();
                              return getArgumentMarshaller(getter).marshall(newValue);
                          }
                      };
                  } else {
                      throw new DynamoDBMappingException("Unsupported type for " + getter + ": " + returnType
                              + ".  Only Strings are supported when auto-generating keys.");
                  }
  
                  keyArgumentMarshallerCache.put(getter, marshaller);
              }
          }
  
          return keyArgumentMarshallerCache.get(getter);
      }
docs: Returns a marshaller for the auto-generated key returned by the getter given.