### Question:
Functions { public static boolean contains(Object object, Object value) { if (object == null || value == null) { return false; } else if (object instanceof CharSequence && value instanceof CharSequence) { return object.toString().contains(value.toString()); } else if (object instanceof Collection) { return ((Collection<?>) object).contains(value); } else if (object instanceof Object[]) { for (Object o : (Object[]) object) { if (o.equals(value)) { return true; } } } else if (object.getClass().isArray()) { int length = Array.getLength(object); for (int n = 0; n < length; n++) { if (Array.get(object, n).equals(value)) { return true; } } } return false; } private  Functions(); static String[] array(String... values); static boolean contains(Object object, Object value); static int indexOf(String value, String substring); static String join(String[] values, String separator); static String keyMatch(Object map, String pattern); static int length(Object value); static boolean matches(String value, String pattern); static String[] matchingGroups(String value, String pattern); static String[] split(String value, String regex); static String toLowerCase(String value); static String toString(Object value); static String toUpperCase(String value); static String trim(String value); static String urlEncode(String value); static String urlDecode(String value); static String encodeBase64(final String value); static String decodeBase64(final String value); static String read(final String filename); static Properties readProperties(final String filename);  }### Answer:
@Test public void contains() throws ExpressionException { String s = "allyoucaneat"; attributes.put("s", s); Boolean o = Expression.valueOf("${contains(attributes.s, 'can')}", Boolean.class).eval(bindings); assertThat(o).isEqualTo(true); }