### Question:
Expression extends ExpressionTemplate { public static Expression not( final Expression expression ) { return expression.not(); } protected  Expression( TypeReference type ); abstract void accept( ExpressionVisitor visitor ); static Expression gt( final Expression lhs, final Expression rhs ); static Expression gte( final Expression lhs, final Expression rhs ); static Expression lt( final Expression lhs, final Expression rhs ); static Expression lte( final Expression lhs, final Expression rhs ); static Expression and( final Expression lhs, final Expression rhs ); static Expression or( final Expression lhs, final Expression rhs ); static Expression equal( final Expression lhs, final Expression rhs ); static Expression isNull( final Expression expression ); static Expression notNull( final Expression expression ); static Expression notEqual( final Expression lhs, final Expression rhs ); static Expression load( final LocalVariable variable ); static Expression add( final Expression lhs, final Expression rhs ); static Expression subtract( final Expression lhs, final Expression rhs ); static Expression multiply( final Expression lhs, final Expression rhs ); static Expression constantInt( int value ); static Expression constantLong( long value ); static Expression constant( final Object value ); static Expression newArray( TypeReference baseType, Expression... constants ); static Expression get( final Expression target, final FieldReference field ); static Expression box( final Expression expression ); static Expression unbox( final Expression expression ); static Expression getStatic( final FieldReference field ); static Expression ternary( final Expression test, final Expression onTrue, final Expression onFalse ); static Expression invoke(
            final Expression target, final MethodReference method,
            final Expression... arguments ); static Expression invoke( final MethodReference method, final Expression... parameters ); static Expression invokeSuper( TypeReference parent, final Expression... parameters ); static Expression cast( Class<?> type, Expression expression ); static Expression instanceOf( final TypeReference typeToCheck, Expression expression ); static Expression cast( final TypeReference type, Expression expression ); static Expression newInstance( Class<?> type ); static Expression newInstance( final TypeReference type ); static Expression not( final Expression expression ); static Expression toDouble( final Expression expression ); static Expression pop( Expression expression ); @Override String toString(); static final Expression TRUE; static final Expression FALSE; static final Expression NULL; static final Expression EMPTY; }### Answer:
@Test public void shouldNegateTrueToFalse() { assertSame( FALSE, not( TRUE ) ); assertSame( TRUE, not( FALSE ) ); }