class BasicStreamID implements StreamID, Cacheable {
        String id;

        public BasicStreamID(String id) {
            if ( id == null || id.isEmpty() ) {
                throw new IllegalArgumentException( "Argument 'id' cannot be null." );
            }
            this.id = StringEscapeUtils.escapeXml10( id );
        }

        @Override
        public String getID() {
            return id;
        }

        @Override
        public String toString() {
            return id;
        }

        @Override
        public int hashCode() {
            return id.hashCode();
        }

        @Override
        public boolean equals( Object o )
        {
            if ( this == o ) return true;
            if ( o == null || getClass() != o.getClass() ) return false;
            return id.equals( ((BasicStreamID) o).id );
        }

        @Override
        public int getCachedSize() throws CannotCalculateSizeException
        {<FILL_FUNCTION_BODY>}
    }

            // Approximate the size of the object in bytes by calculating the size of each field.
            int size = 0;
            size += CacheSizes.sizeOfObject();   // overhead of object
            size += CacheSizes.sizeOfString(id); // id
            return size;
        
<no_super_class>