- interface Collection<T> { 
- 	void add(T t); 
- 	void addRange(T[] ts); 
- } 
-   
- abstract class AbstractCollection<T> implements Collection<T> { 
- 	@Override 
- 	public void addRange(T[] ts) { 
- 		for (T t : ts) { 
- 			add(t); 
- 		} 
- 	} 
- } 
-   
- class CollectionWithCounter<T> extends AbstractCollection<T> { 
- 	int elementsCount = 0; 
-   
- 	@Override 
- 	public void add(T t) { 
- 		elementsCount++; 
- 	} 
-   
- 	@Override 
- 	public void addRange(T[] ts) { 
- 		int currentCount = elementsCount; 
- 		super.addRange(ts); 
- 		elementsCount = currentCount + ts.length; 
- 	} 
- } 
-   
- class Main { 
- 	public static void-  main (String[]-  args ) {
 
- 		CollectionWithCounter<Object> cc; 
-   
- 		cc = new CollectionWithCounter<>(); 
- 		cc.add(null); 
- 		cc.add(null); 
- 		cc.add(null); 
- 		System- . out- . println("elementsCount = " +-  cc. elementsCount);
 
-   
- 		cc = new CollectionWithCounter<>(); 
- 		System- . out- . println("elementsCount = " +-  cc. elementsCount);
 
- 	} 
- } 
				aW50ZXJmYWNlIENvbGxlY3Rpb248VD4gewoJdm9pZCBhZGQoVCB0KTsKCXZvaWQgYWRkUmFuZ2UoVFtdIHRzKTsKfQoKYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RDb2xsZWN0aW9uPFQ+IGltcGxlbWVudHMgQ29sbGVjdGlvbjxUPiB7CglAT3ZlcnJpZGUKCXB1YmxpYyB2b2lkIGFkZFJhbmdlKFRbXSB0cykgewoJCWZvciAoVCB0IDogdHMpIHsKCQkJYWRkKHQpOwoJCX0KCX0KfQoKY2xhc3MgQ29sbGVjdGlvbldpdGhDb3VudGVyPFQ+IGV4dGVuZHMgQWJzdHJhY3RDb2xsZWN0aW9uPFQ+IHsKCWludCBlbGVtZW50c0NvdW50ID0gMDsKCQoJQE92ZXJyaWRlCglwdWJsaWMgdm9pZCBhZGQoVCB0KSB7CgkJZWxlbWVudHNDb3VudCsrOwoJfQoJCglAT3ZlcnJpZGUKCXB1YmxpYyB2b2lkIGFkZFJhbmdlKFRbXSB0cykgewoJCWludCBjdXJyZW50Q291bnQgPSBlbGVtZW50c0NvdW50OwoJCXN1cGVyLmFkZFJhbmdlKHRzKTsKCQllbGVtZW50c0NvdW50ID0gY3VycmVudENvdW50ICsgdHMubGVuZ3RoOwoJfQp9CgpjbGFzcyBNYWluIHsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKCQlDb2xsZWN0aW9uV2l0aENvdW50ZXI8T2JqZWN0PiBjYzsKCQkKCQljYyA9IG5ldyBDb2xsZWN0aW9uV2l0aENvdW50ZXI8PigpOwoJCWNjLmFkZChudWxsKTsKCQljYy5hZGQobnVsbCk7CgkJY2MuYWRkKG51bGwpOwoJCVN5c3RlbS5vdXQucHJpbnRsbigiZWxlbWVudHNDb3VudCA9ICIgKyBjYy5lbGVtZW50c0NvdW50KTsKCQkKCQljYyA9IG5ldyBDb2xsZWN0aW9uV2l0aENvdW50ZXI8PigpOwoJCWNjLmFkZFJhbmdlKG5ldyBPYmplY3RbM10pOwoJCVN5c3RlbS5vdXQucHJpbnRsbigiZWxlbWVudHNDb3VudCA9ICIgKyBjYy5lbGVtZW50c0NvdW50KTsKCX0KfQ==