  There are often multiple ways to implement the same requirement in source
code. Different implementation choices can result in code snippets that are
similar, and have been defined in multiple ways: code clones, examples, simions
and variants. Currently, there is a lack of a consistent and unambiguous
definition of such types of code snippets. Here we present a characterization
study of code variants - a specific type of code snippets that differ from each
other by at least one desired property, within a given code context. We
distinguish code variants from other types of redundancies in source code, and
demonstrate the significant role that they play: about 25% to 43% of developer
discussions (in a set of nine open source projects) were about variants. We
characterize different types of variants based on their code context and
desired properties. As a demonstration of the possible use of our
characterization of code variants, we show how search results can be ranked
based on a desired property (e.g., speed of execution).
