Text implements CharSequence { public void strain(byte[] data, int pos, int len) { this.chars = data; this.pos = pos; this.len = len; this.linePointer = 0; } Text(); protected  Text(Text another);  Text(String s);  Text(int i);  Text(byte[] data, int pos, int len); void strain(byte[] data, int pos, int len); int length(); char charAt(int index); void copy(Text destination); void duplicate(Text destination); int divide(char separator, Text[] parts); int divide(char[] separators, Text[] parts); CharSequence subSequence(int start, int end); Text subtext(int start, int end); Text subtext(int start); Collection<Text> split(char separator); Collection<Text> split(Text separator); int indexOf(Text value); int indexOf(char value); void trim(); Text nextLine(); boolean hasMoreLines(); @Override boolean equals(Object other); @Override int hashCode(); boolean startsWith(Text pattern); @Override String toString(); int toInteger(); long toLong(); int hexToInteger(); void write(ByteBuffer buffer); void copyRemainder(Text other); boolean contains(char c);  }
@Test public void testStrain() { byte[] data = "One two three".getBytes(); Text t = new Text(); t.strain(data, 4, 3); assertEquals("two", t.toString()); }
@Test public void perfTests() { byte[] data = "name1".getBytes(); long s = System.nanoTime(); for (int i = 0; i < 100; i++) { Text t = new Text(); t.strain(data, 0, data.length); } long f = System.nanoTime(); System.out.println("Create/straing execution time=" + (f-s)); }