+Assignment::Target::Target(Statement *d):
+ declaration(d),
+ chain_len(0)
+{
+ fill(chain, chain+7, 0);
+}
+
+bool Assignment::Target::operator<(const Target &other) const
+{
+ if(declaration!=other.declaration)
+ return declaration<other.declaration;
+ for(unsigned i=0; (i<7 && i<chain_len && i<other.chain_len); ++i)
+ if(chain[i]!=other.chain[i])
+ return chain[i]<other.chain[i];
+ return chain_len<other.chain_len;
+}
+
+