code: public static <T> Type literal(final L<T> literal) {
          if (literal.getClass().equals(L.class)) {
              throw new IllegalArgumentException(
                      "Incorrect usage: literal type must be an anonymous class: new L<Some>(){}");
          }
          return literal.getType();
      }
docs: {@code literal(new L<List<String>>(){}) == List<String>}.
  <p>
  Method mostly exists to remind about {@link TypeLiteral}, which can be used directly like
  {@code new TypeLiteral<List<String>>(){}.getType()}.
  
  @param literal literal with type declaration
  @param <T>     actual type
  @return type declared in literal