class Contrived(BaseModel, self.Settings):
     stream1 = Feature(TextStream, store=False)
     stream2 = Feature(TextStream, store=False)
     t1 = Feature(Tokenizer, needs=stream1, store=False)
     t2 = Feature(Tokenizer, needs=stream2, store=False)
     count1 = JSONFeature(WordCount, needs=t1, store=True)
     count2 = JSONFeature(WordCount, needs=t2, store=True)
     aggregate = JSONFeature( \
             WordCountAggregator, needs=[count1, count2], store=True)
 class D2(BaseModel, self.Settings):
     stream = Feature(TextStream, store=True)
     words = Feature(Tokenizer, needs=stream, store=False)
     count = JSONFeature(WordCount, needs=words, store=True)
     timestamp = JSONFeature(
             TimestampEmitter,
             version='2',
             needs=stream,
             store=True)
 class D1(BaseModel, self.Settings):
     stream = Feature(TextStream, store=True)
     words = Feature(Tokenizer, needs=stream, store=False)
     count = JSONFeature(WordCount, needs=words, store=True)
     timestamp = JSONFeature(
             TimestampEmitter,
             version='1',
             needs=stream,
             store=True)
     validated = Feature(ValidatesDependencies, needs=stream, store=True)
        class DocumentWordCount(BaseModel, SingleDocumentDatabaseSettings):
            counts = Feature(
                    FeatureAggregator,
                    cls=Doc,
                    feature=Doc.count,
                    store=False)

            total_count = JSONFeature(
                    WordCountAggregator,
                    store=True,
                    needs=counts)
 class Document(BaseModel, self.Settings):
     stream = Feature(TextStream, store=True)
     dam = Feature(Dam, needs=stream, store=False)
     words = Feature(Tokenizer, needs=dam, store=False)
     count = JSONFeature(WordCount, needs=words, store=False)
 class D2(BaseModel, self.Settings):
     stream = Feature(TextStream, store=True)
     words = Feature(Tokenizer, needs=stream, store=False)
     count = JSONFeature(WordCount, needs=words, store=True)
     aggregate = JSONFeature(WordCountAggregator, needs=count,
                             store=True)
 class D(BaseModel, self.Settings):
     stream = Feature(TextStream, store=True)
     copy = Feature(Counter, needs=stream, store=False)
     words = Feature(Tokenizer, needs=copy, store=False)
     count = JSONFeature(WordCount, needs=words, store=False)
 class D3(D2):
     count = JSONFeature(WordCount, needs=D2.words, store=True)
class Document2(BaseModel):
    stream = Feature(TextStream, store=False)
    words = Feature(Tokenizer, needs=stream, store=False)
    count = JSONFeature(WordCount, needs=words, store=True)